package proxy.jdk2;

import java.util.Properties;

/**
 * 给数学运算加上日志和入参校验横切逻辑，采用jdk的动态代理实现。
 */
public class Client {
    public static void main(String[] args) {
        // 将动态代理类的字节码保存到bin目录
        Properties properties = System.getProperties();
        properties.put("sun.misc.ProxyGenerator.saveGeneratedFiles","true");

        // 被代理对象
        ArithmeticCalculatorImpl target = new ArithmeticCalculatorImpl();

        ArithmeticCalculator proxy = (ArithmeticCalculator)LogHandler.getProxy(
                ValidatorHandler.getProxy(target)
        );

        // 通过代理对象调用目标对象方法
        proxy.div(1,1);

    }
}
